'''
Description: 
Author: Zilu
Date: 2021-11-14 15:41:10
Version: 
LastEditTime: 2021-11-14 16:04:36
LastEditors: Zilu
'''

# 使用requests的get方法，访问页面
import json
import requests
r = requests.get('https://www.douban.com/')
type(r)
r
r.status_code
r.text

# 使用params作为url的参数
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
r = requests.get('https://www.douban.com/search', params={'q':'python', 'cat':'1001'}, headers=headers)
r.url
r.text
r.encoding

# 无论响应是文本还是二进制内容，我们都可以用content属性获得bytes对象
r.content

# requests 还可以获得指定类型的响应，如JSON
r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
r.json()

# 要发送POST请求，只需要把get()方法变成post()，然后传入data参数作为POST请求的数据
r = requests.post('https://accounts.douban.com/login', data={'form_email': 'abc@example.com', 'form_password': '123456'})
r
r.status_code
r.text
r.content

# requests默认使用application/x-www-form-urlencoded对POST数据编码。
# 如果要传递JSON数据，可以直接传入json参数：
params = {'key':'value'}
r = requests.post('https://accounts.douban.com/login', json=params)  # 内部自动序列化为JSON

# 上传文件需要更复杂的编码方式，但是 requests 把它简化成 files 参数：
uploadFiles = {'file': open('report.xls', 'rb')}    # 一定要用二进制读取，这样才是bytes类型的
r = requests.post('https://accounts.douban.com/login', files=uploadFiles)

# 把post()方法替换为put()，delete()等，就可以以PUT或DELETE方式请求资源
# requests 还可以方便地获得其他数据
r.headers
r.cookies
# get中也可以传入cookie参数






